clear;%清除工作区变量
clc;%清屏
close all;%关闭所有图形窗口

%%%%2028到2108年的各年龄段的总人数和女性数量%%%

%初始化，设置各种参数和初始人数矩阵
x = [206.46 422.50 478.72 229.92 53.44]';
%x0女性各阶段人数
%x0 = x .* 0.4988
x0 = [102.9822 210.7430 238.7855 114.6841 26.6559]';
%H为状态转移矩阵，其实是存活矩阵
H = zeros(5,5);
H(2) = 0.88; H(8) = 0.97; H(14) = 0.86; H(20) = 0.22;
%B是生育矩阵，即各个年龄段妇女的生育率
B = [0 2 0.3 0 0];

for n = 1:0.5:5
    %y是x之下一年的人口数目，尚不包括迁移人数和1岁的人数
    y = H*x;
    %y(1)是下一年1岁的人口数目，即今年刚出生的人
    y(1) = B*x0;
    %g是迁移人数，也得按照年龄比例来存储数据
    g = [30 120 120 20 10]';
    %迁移人数加到y上
    y = y + g;
    %求与y对应的年份的各个年龄段妇女人数
    %包括x0中存活下来的，迁移的一部分，第一时间段为刚出生的女性人数
    y0 = zeros(5,1);
    y0(1) = y(1)/2;%或y(1)乘以女婴占总男女婴的比例
    for i=1:1:4
        y0(i+1) = x0(i)*H(i+1+5*(i-1));
    end
    g0 = g ./ 2;
    y0 = y0 + g0;
    %g0为迁移过来的各个年龄段的女性人数
    disp(2008+n*20)
    zong = y'
    nv = y0'
    x = y;
    x0 = y0;
end
%自此，则完成了一轮的计算
%要预测更多，只需要循环计算以上步骤即可